草庐IT

scrapy -- CrawlSpider类

全部标签

python - Scrapy 进程未成功抓取

我的爬虫有2个问题:尽管我使用了'COOKIES_ENABLED':False和轮换代理(它应该为每个请求提供不同的IP),但一段时间后它会收到很多302。我在几次302后通过重新启动scraper解决了这个问题我看到scraper成功抓取的内容远远超过它处理的内容,但我无法用它做任何事情。在下面的示例中,我得到了121200秒的响应,但只处理了27。蜘蛛classMySpider(Spider):name='MySpider'custom_settings={'DOWNLOAD_DELAY':0,'RETRY_TIMES':1,'LOG_LEVEL':'DEBUG','CLOSESP

python - Scrapy 爬取速度慢(60 页/分钟)

我的scrapy爬行速度很慢(大约1页/秒)。我正在从aws服务器抓取一个主要网站,所以我认为这不是网络问题。CPU利用率远未接近100,如果我启动多个scrapy进程,爬网速度会快得多。Scrapy好像爬了一堆页面,然后挂了几秒,然后重复。我试过玩:CONCURRENT_REQUESTS=CONCURRENT_REQUESTS_PER_DOMAIN=500但这似乎并没有真正让指针超过20。 最佳答案 您确定允许高速抓取目标站点吗?许多网站实现下载阈值,“一段时间后”开始响应缓慢。 关于

python - 从 Scrapy 项目中保存 Django 模型

我有一个Scrapy项目,我试图将输出项目保存为Django模型定义中的对象(我没有使用DjangoItem)。我正在导入指定的Django设置here.defsetup_django_env(path):importimp,osfromdjango.core.managementimportsetup_environf,filename,desc=imp.find_module('settings',[path])project=imp.load_module('settings',f,filename,desc)setup_environ(project)setup_django_

python - 使用 scrapy spider 抓取 http 状态码

我是scrapy的新手。我正在编写一个蜘蛛,旨在检查服务器状态代码的一长串URL,并在适当的情况下检查它们被重定向到的URL。重要的是,如果存在重定向链,我需要知道每次跳转时的状态码和url。我正在使用response.meta['redirect_urls']来捕获url,但我不确定如何捕获状态代码-似乎没有响应元键。我意识到我可能需要编写一些自定义中间件来公开这些值,但不太清楚如何记录每一跳的状态代码,也不清楚如何从蜘蛛访问这些值。我看过但找不到任何人这样做的例子。如果有人能指出我正确的方向,将不胜感激。例如,items=[]item=RedirectItem()item['url

python - 为 scrapy 中蜘蛛的 start_urls 列表中给出的每个 url 单独输出文件

我想为我在spider的start_urls中设置的每个url创建单独的输出文件,或者想以某种方式拆分输出文件开始url。以下是我的蜘蛛的start_urlsstart_urls=['http://www.dmoz.org/Arts/','http://www.dmoz.org/Business/','http://www.dmoz.org/Computers/']我想创建单独的输出文件,例如Arts.xml业务.xml计算机.xml我不知道该怎么做。我正在考虑通过在项目管道类的spider_opened方法中实现一些类似以下的东西来实现这一点,importrefromscrapyim

python - 如何在 Jupyter 中运行 Scrapy 项目?

在Mac上,我安装了Jupyter,当我从Scrapy项目的根文件夹中键入jupyternotebook时,它会打开笔记本。此时我可以浏览所有项目文件。如何从笔记本执行项目?如果我单击“终端”下的“运行”选项卡,我会看到:Therearenoterminalsrunning. 最佳答案 有两种主要方法可以实现:1.在Files选项卡下打开一个新终端:New>Terminal然后简单地运行你的蜘蛛:scrapycrawl[options]2。创建一个新笔记本并使用CrawlerProcess或CrawlerRunner在单元格中运行的

python - 使用 cookie 进行 scrapy 身份验证登录

我是scrapy的新手,由于在线评论很好,所以决定尝试一下。我正在尝试使用scrapy登录网站。通过用Selenium收集所需的cookie并将它们添加到机械化,我已经成功地使用Selenium和机械化的组合登录。现在我正在尝试用scrapy和selenium做一些类似的事情,但似乎什么都做不了。我什至无法判断是否有任何工作。谁能帮帮我吗。以下是我开始的内容。我可能甚至不需要用scrapy传输cookie,但我无法判断它是否真的登录过。谢谢fromscrapy.spiderimportBaseSpiderfromscrapy.httpimportResponse,FormRequest

python - 记录到scrapy中的特定错误日志文件

我通过这样做来运行一个scrapy日志:fromscrapyimportlogclassMySpider(BaseSpider):name="myspider"def__init__(self,name=None,**kwargs):LOG_FILE="logs/spider.log"log.log.defaultObserver=log.log.DefaultObserver()log.log.defaultObserver.start()log.started=Falselog.start(LOG_FILE,loglevel=log.INFO)super(MySpider,self

python - 从 Django View 启动 Scrapy

我对Scrapy的使用经验有限,每次使用都是通过终端的命令。如何从我的django模板中获取我的表单数据(要抓取的url)以与scrapy通信以开始抓取?到目前为止,我只想到从django的View中获取表单返回的数据,然后尝试进入scrapy目录中的spider.py,将表单数据的url添加到蜘蛛的start_urls中。从那里开始,我真的不知道如何触发实际的爬行,因为我习惯于通过我的终端使用“scrapycrawldmoz”之类的命令严格执行它。谢谢。微小的编辑:刚刚发现了scrapyd...我想我可能正朝着正确的方向前进。 最佳答案

Python、Scrapy、管道 : function "process_item" not getting called

我有一个非常简单的代码,如下所示。抓取没问题,我可以看到所有生成正确数据的print语句。在Pipeline中,初始化工作正常。但是,process_item函数不会被调用,因为函数开头的print语句永远不会执行。蜘蛛:comosham.pyimportscrapyfromscrapy.spiderimportSpiderfromscrapy.selectorimportSelectorfromscrapy.httpimportRequestfromactivityadvisor.itemsimportComoShamLocationfromactivityadvisor.items